// API使用示例
import { authApi, projectApi, userApi, statisticsApi } from '@/services'
import { ElMessage } from 'element-plus'

// 认证相关示例
export const authExamples = {
  // 用户登录
  async loginExample() {
    try {
      const response = await authApi.login({
        username: 'testuser',
        password: 'password123',
        role: 'enterprise'
      })
      
      if (response.success) {
        ElMessage.success('登录成功')
        console.log('用户信息:', response.data.user)
        return response.data
      } else {
        ElMessage.error(response.message)
        return null
      }
    } catch (error) {
      console.error('登录失败:', error)
      ElMessage.error('登录失败')
      return null
    }
  },

  // 用户注册
  async registerExample() {
    try {
      const response = await authApi.register({
        username: 'newuser',
        password: 'Password123',
        confirmPassword: 'Password123',
        role: 'student',
        realName: '张三',
        email: 'zhangsan@example.com',
        phone: '13800138000',
        department: '计算机科学与技术学院',
        researchDirection: ['人工智能', '机器学习']
      })
      
      if (response.success) {
        ElMessage.success('注册成功')
        return response.data
      } else {
        ElMessage.error(response.message)
        return null
      }
    } catch (error) {
      console.error('注册失败:', error)
      ElMessage.error('注册失败')
      return null
    }
  }
}

// 项目相关示例
export const projectExamples = {
  // 获取项目列表
  async getProjectsExample() {
    try {
      const response = await projectApi.getProjects({
        page: 1,
        pageSize: 10,
        keyword: '人工智能',
        filters: {
          status: 'published',
          discipline: '人工智能'
        }
      })
      
      console.log('项目列表:', response.data)
      console.log('分页信息:', response.pagination)
      return response
    } catch (error) {
      console.error('获取项目列表失败:', error)
      return null
    }
  },

  // 创建项目
  async createProjectExample() {
    try {
      const response = await projectApi.createProject({
        title: '基于深度学习的图像识别系统',
        researchDirection: ['人工智能', '深度学习', '计算机视觉'],
        description: '开发一套基于深度学习的图像识别系统',
        requirements: '熟悉Python、TensorFlow，有图像处理经验',
        deadline: '2024-12-31',
        budget: 50000,
        contactPerson: '李经理',
        contactPhone: '13800138000'
      })
      
      if (response.success) {
        ElMessage.success('项目创建成功')
        return response.data
      } else {
        ElMessage.error(response.message)
        return null
      }
    } catch (error) {
      console.error('创建项目失败:', error)
      ElMessage.error('创建项目失败')
      return null
    }
  },

  // 搜索项目
  async searchProjectsExample() {
    try {
      const response = await projectApi.searchProjects({
        keyword: '机器学习',
        discipline: '人工智能',
        enterpriseName: '华为',
        page: 1,
        pageSize: 20
      })
      
      console.log('搜索结果:', response.data)
      return response
    } catch (error) {
      console.error('搜索项目失败:', error)
      return null
    }
  }
}

// 用户相关示例
export const userExamples = {
  // 获取用户信息
  async getUserInfoExample() {
    try {
      const response = await userApi.getUserInfo()
      console.log('用户信息:', response.data)
      return response
    } catch (error) {
      console.error('获取用户信息失败:', error)
      return null
    }
  },

  // 更新用户信息
  async updateUserInfoExample() {
    try {
      const response = await userApi.updateUserInfo({
        name: '新姓名',
        email: 'newemail@example.com',
        phone: '13900139000'
      })
      
      if (response.success) {
        ElMessage.success('用户信息更新成功')
        return response.data
      } else {
        ElMessage.error(response.message)
        return null
      }
    } catch (error) {
      console.error('更新用户信息失败:', error)
      ElMessage.error('更新用户信息失败')
      return null
    }
  }
}

// 统计相关示例
export const statisticsExamples = {
  // 获取平台统计
  async getPlatformStatsExample() {
    try {
      const response = await statisticsApi.getPlatformStats()
      console.log('平台统计:', response.data)
      return response
    } catch (error) {
      console.error('获取平台统计失败:', error)
      return null
    }
  },

  // 获取趋势统计
  async getTrendStatsExample() {
    try {
      const response = await statisticsApi.getTrendStats({
        type: 'monthly',
        startDate: '2024-01-01',
        endDate: '2024-12-31'
      })
      
      console.log('趋势统计:', response.data)
      return response
    } catch (error) {
      console.error('获取趋势统计失败:', error)
      return null
    }
  },

  // 导出统计数据
  async exportStatisticsExample() {
    try {
      await statisticsApi.exportStatistics({
        type: 'platform',
        format: 'excel'
      })
      
      ElMessage.success('统计数据导出成功')
    } catch (error) {
      console.error('导出统计数据失败:', error)
      ElMessage.error('导出统计数据失败')
    }
  }
}

// 文件上传示例
export const uploadExamples = {
  // 上传图片
  async uploadImageExample(file: File) {
    try {
      const response = await projectApi.uploadApi.uploadImage(file, (progress) => {
        console.log('上传进度:', progress + '%')
      })
      
      if (response.success) {
        ElMessage.success('图片上传成功')
        console.log('图片URL:', response.data.url)
        return response.data
      } else {
        ElMessage.error(response.message)
        return null
      }
    } catch (error) {
      console.error('上传图片失败:', error)
      ElMessage.error('上传图片失败')
      return null
    }
  },

  // 上传文档
  async uploadDocumentExample(file: File) {
    try {
      const response = await projectApi.uploadApi.uploadDocument(file, (progress) => {
        console.log('上传进度:', progress + '%')
      })
      
      if (response.success) {
        ElMessage.success('文档上传成功')
        return response.data
      } else {
        ElMessage.error(response.message)
        return null
      }
    } catch (error) {
      console.error('上传文档失败:', error)
      ElMessage.error('上传文档失败')
      return null
    }
  }
}

// 错误处理示例
export const errorHandlingExamples = {
  // 网络错误处理
  async handleNetworkError() {
    try {
      // 模拟网络错误
      await projectApi.getProjects()
    } catch (error: any) {
      if (error.message.includes('网络错误')) {
        ElMessage.error('网络连接失败，请检查网络设置')
      } else if (error.message.includes('超时')) {
        ElMessage.error('请求超时，请稍后重试')
      } else {
        ElMessage.error('请求失败: ' + error.message)
      }
    }
  },

  // 业务错误处理
  async handleBusinessError() {
    try {
      const response = await authApi.login({
        username: 'invalid',
        password: 'wrong',
        role: 'enterprise'
      })
      
      if (!response.success) {
        // 处理业务错误
        switch (response.code) {
          case 1001:
            ElMessage.error('用户名不存在')
            break
          case 1002:
            ElMessage.error('密码错误')
            break
          case 1003:
            ElMessage.error('账户已被禁用')
            break
          default:
            ElMessage.error(response.message || '登录失败')
        }
      }
    } catch (error) {
      console.error('处理业务错误失败:', error)
    }
  }
}

// 使用示例
export const runExamples = async () => {
  console.log('开始运行API使用示例...')
  
  // 运行认证示例
  await authExamples.loginExample()
  
  // 运行项目示例
  await projectExamples.getProjectsExample()
  
  // 运行统计示例
  await statisticsExamples.getPlatformStatsExample()
  
  console.log('API使用示例运行完成')
}
